package chaw.android.util;

import java.io.IOException;

import android.graphics.Bitmap;
import android.graphics.Matrix;
import android.media.ExifInterface;

public class ImageTurn {

    public static int getExifOrientation(String filepath){
    	int degree = 0;
    	ExifInterface exif = null;
    	try{
    		exif = new ExifInterface(filepath);
    		if(exif != null){
    			int orientation = exif.getAttributeInt(ExifInterface.TAG_ORIENTATION, -1);

    			if(orientation != -1){
    				switch(orientation){
    				case ExifInterface.ORIENTATION_ROTATE_90:
    					degree = 90;
    					break;
    				case ExifInterface.ORIENTATION_ROTATE_180:
    					degree = 180;
    					break;
    				case ExifInterface.ORIENTATION_ROTATE_270:
    					degree = 270;
    					break;
    				}
    			}
    		}
    	}
    	catch(IOException e){
    		e.printStackTrace();
    	}
    	return degree;
    }
    
    public static Bitmap getResourceBitmap(Bitmap bitmap, int degrees){
    	if(degrees != 0 && bitmap != null){
    		Matrix m = new Matrix();
    		m.setRotate(degrees, (float)bitmap.getWidth() / 2 , (float)bitmap.getHeight() / 2);
    		try{
    			Bitmap b = Bitmap.createBitmap(bitmap, 0, 0, bitmap.getWidth(), bitmap.getHeight(), m, true);
    			if(bitmap != b){
    				bitmap.recycle();
    				bitmap = b;
    			}
    		}
    		catch(OutOfMemoryError ex){
    			ex.printStackTrace();
    		}
    	}
    	return bitmap;
    }

}
